#include "interface_display.h"

// ==============================
// 主界面显示函数
// ==============================

/**
 * @brief 显示主界面
 * 
 * 创建并显示智能家居系统的主界面，包含各种设备控制入口
 */
void show_home_win()
{
    home_screen = lv_obj_create(lv_scr_act());   // 创建主界面对象
    lv_obj_set_size(home_screen, 800, 480);      // 设置界面大小
    lv_obj_set_style_bg_color(home_screen, lv_color_make(0, 0, 0), LV_PART_MAIN); // 设置背景颜色为黑色

    // 创建标题标签
    lv_obj_t *label = lv_label_create(lv_scr_act()); // 创建标签对象
    lv_label_set_text(label, "BOKII的小屋");     // 设置标签文本
    lv_obj_set_style_text_color(label, lv_color_hex(0xFFFFFF), LV_STATE_DEFAULT); // 设置文本颜色为白色
    lv_obj_align(label, LV_ALIGN_TOP_LEFT, 63, 75); // 设置标签对齐位置
    lv_obj_set_style_text_font(label, &chinese_ziku, 0); // 设置中文字体

    slideshow();                                 // 显示幻灯片
    lv_imgbtn(home_screen, 40, 198, 220, 202, "S:/root/THPdisplay_1.png"); // 创建温湿度显示区域

    // 创建台灯控制按钮
    lv_obj_t *lamp = lv_imgwin(home_screen, 263, 82, 100, 157, "S:/root/lamp_1.png");
    lv_obj_add_event_cb(lamp, lamp_btn_event_cb, LV_EVENT_CLICKED, NULL);

    // 创建空调控制按钮
    lv_obj_t *air = lv_imgwin(home_screen, 365, 82, 100, 157, "S:/root/air_1.png");
    lv_obj_add_event_cb(air, air_btn_event_cb, LV_EVENT_CLICKED, NULL);

    // 创建窗帘控制按钮
    lv_obj_t *curtain = lv_imgwin(home_screen, 467, 82, 100, 157, "S:/root/curtain_1.png");
    lv_obj_add_event_cb(curtain, curtain_btn_event_cb, LV_EVENT_CLICKED, NULL);

    // 创建智能灯控制按钮
    lv_obj_t *smart_lamp = lv_imgwin(home_screen, 262, 242, 100, 158, "S:/root/smart_lamp.png");
    lv_obj_add_event_cb(smart_lamp, smart_lamp_btn_event_cb, LV_EVENT_CLICKED, NULL);

    music();                                     // 显示音乐播放器
    lv_imgbtn(home_screen, 569, 82, 100, 318, "S:/root/temp.png"); // 创建温度显示区域
    
    // 创建右侧灯光控制区域
    lv_obj_t *light = lv_imgbtn(home_screen, 672, 82, 100, 318, "S:/root/right_lamp.png");
    
    // 创建灯光亮度滑动条
    lv_obj_t *slide_lamp = lv_slider_create(light); // 创建滑动条对象
    lv_obj_set_size(slide_lamp, 57, 200);       // 设置滑动条大小
    lv_obj_align(slide_lamp, LV_ALIGN_CENTER, 0, 0); // 设置滑动条对齐位置
    lv_slider_set_range(slide_lamp, 0, 100);    // 设置滑动条范围0-100
    lv_slider_set_value(slide_lamp, 75, LV_ANIM_OFF); // 设置初始值75

    // 设置滑动条样式
    lv_obj_set_style_bg_color(slide_lamp, lv_color_hex(0xffffff), LV_PART_MAIN); // 设置背景颜色为白色
    lv_obj_set_style_radius(slide_lamp, 10, LV_PART_INDICATOR); // 设置指示器圆角
    lv_obj_set_style_radius(slide_lamp, 10, LV_PART_MAIN); // 设置主圆角

    // 设置初始颜色（对应的黄色）
    float initial_ratio = (float)(50 - 0) / (100 - 0); // 计算初始比例
    uint8_t initial_yellow = (uint8_t)(255 - (255 - 200) * initial_ratio); // 计算黄色分量
    uint8_t initial_blue = (uint8_t)(150 * (1.0 - initial_ratio)); // 计算蓝色分量
    lv_color_t initial_color = lv_color_make(initial_yellow, initial_yellow, initial_blue); // 创建初始颜色
    lv_obj_set_style_bg_color(slide_lamp, initial_color, LV_PART_INDICATOR); // 设置指示器颜色

    // 隐藏旋钮
    lv_obj_set_style_bg_opa(slide_lamp, LV_OPA_TRANSP, LV_PART_KNOB);     // 背景透明
    lv_obj_set_style_border_opa(slide_lamp, LV_OPA_TRANSP, LV_PART_KNOB); // 边框透明
    lv_obj_set_style_width(slide_lamp, 0, LV_PART_KNOB);                  // 设置旋钮宽度为0
    lv_obj_set_style_height(slide_lamp, 0, LV_PART_KNOB);                 // 设置旋钮高度为0

    lv_obj_add_event_cb(slide_lamp, slider_event_cb_yellow, LV_EVENT_VALUE_CHANGED, NULL); // 绑定滑动条事件

    // 创建导航栏按钮
    lv_obj_t *home = lv_imgS4SW(home_screen, -19, 23, 57, 57, "S:/root/home.png");
    lv_obj_add_style(home, &style_defalut, LV_PART_MAIN | LV_STATE_DEFAULT); // 应用默认透明样式

    lv_obj_t *album = lv_imgS4SW(home_screen, -19, 192, 57, 57, "S:/root/album.png");
    lv_obj_add_event_cb(album, home_btn_event_callback, LV_EVENT_CLICKED, (void *)1); // 绑定切换到相册事件

    lv_obj_t *admin = lv_imgS4SW(home_screen, -19, 358, 57, 57, "S:/root/admin.png");
    lv_obj_add_event_cb(admin, home_btn_event_callback, LV_EVENT_CLICKED, (void *)2); // 绑定切换到管理界面事件
}

// ==============================
// 相册界面显示函数
// ==============================

/**
 * @brief 显示相册界面
 * 
 * 创建并显示图片浏览和播放界面
 */
void show_album_win()
{
    album_screen = lv_obj_create(lv_scr_act());  // 创建相册界面对象
    lv_obj_set_size(album_screen, 800, 480);     // 设置界面大小
    lv_obj_set_style_bg_color(album_screen, lv_color_make(0, 0, 0), LV_PART_MAIN); // 设置背景颜色为黑色

    test();                                      // 显示相册测试界面

    // 创建导航栏按钮
    lv_obj_t *home = lv_imgS4SW(album_screen, -19, 23, 57, 57, "S:/root/home.png");
    lv_obj_add_event_cb(home, album_btn_event_callback, LV_EVENT_CLICKED, (void *)0); // 绑定切换到主界面事件

    lv_obj_t *album = lv_imgS4SW(album_screen, -19, 192, 57, 57, "S:/root/album.png");
    lv_obj_add_style(album, &style_defalut, LV_PART_MAIN | LV_STATE_DEFAULT); // 应用默认透明样式

    lv_obj_t *admin = lv_imgS4SW(album_screen, -19, 358, 57, 57, "S:/root/admin.png");
    lv_obj_add_event_cb(admin, album_btn_event_callback, LV_EVENT_CLICKED, (void *)2); // 绑定切换到管理界面事件
}

// ==============================
// 管理界面显示函数
// ==============================

/**
 * @brief 显示管理界面
 * 
 * 创建并显示系统管理信息界面
 */
void show_admin_win()
{
    admin_screen = lv_obj_create(lv_scr_act());  // 创建管理界面对象
    lv_obj_set_size(admin_screen, 800, 480);     // 设置界面大小
    lv_obj_set_style_bg_color(admin_screen, lv_color_make(0, 0, 0), LV_PART_MAIN); // 设置背景颜色为黑色

    // 创建管理员信息文本框
    lv_obj_t *admin_info_ta = lv_textarea_create(lv_scr_act()); // 创建文本框对象
    lv_obj_set_size(admin_info_ta, 500, 300);    // 设置文本框大小
    lv_obj_align(admin_info_ta, LV_ALIGN_CENTER, 40, 0); // 设置文本框对齐位置
    lv_textarea_set_text(admin_info_ta, "loading..."); // 设置初始文本
    lv_obj_set_style_text_font(admin_info_ta, &chinese_ziku, 0); // 设置中文字体

    // 读取管理员信息文件
    const char *file_path = "/root/admin/admin.txt"; // 文件路径
    char *file_content = read_file_content(file_path); // 读取文件内容

    if(file_content != NULL) {                   // 如果成功读取文件
        lv_textarea_set_text(admin_info_ta, file_content); // 设置文本框内容
        free(file_content);                      // 释放内存
    } else {                                     // 如果读取失败
        lv_textarea_set_text(admin_info_ta, "无法读取管理员信息文件"); // 显示错误信息
    }

    // 创建导航栏按钮
    lv_obj_t *home = lv_imgS4SW(admin_screen, -19, 23, 57, 57, "S:/root/home.png");
    lv_obj_add_event_cb(home, admin_btn_event_callback, LV_EVENT_CLICKED, (void *)0); // 绑定切换到主界面事件

    lv_obj_t *album = lv_imgS4SW(admin_screen, -19, 189, 57, 57, "S:/root/album.png");
    lv_obj_add_event_cb(album, admin_btn_event_callback, LV_EVENT_CLICKED, (void *)1); // 绑定切换到相册事件

    lv_obj_t *admin = lv_imgS4SW(admin_screen, -19, 359, 57, 57, "S:/root/admin.png");
    lv_obj_add_style(admin, &style_defalut, LV_PART_MAIN | LV_STATE_DEFAULT); // 应用默认透明样式
}